package com.micro.ai.template.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.micro.ai.commons.domain.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * 分类实体
 * 
 * @author micro-ai
 * @since 0.0.1
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("category")
@Schema(description = "分类实体")
public class Category extends BaseEntity {

    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
     * 分类名称
     */
    @Schema(description = "分类名称", example = "客服助手")
    private String name;

    /**
     * 分类描述
     */
    @Schema(description = "分类描述")
    private String description;

    /**
     * 父分类ID
     */
    @Schema(description = "父分类ID", example = "0")
    private Long parentId;

    /**
     * 分类路径，如：/1/2/3/
     */
    @Schema(description = "分类路径", example = "/1/2/3/")
    private String path;

    /**
     * 分类层级
     */
    @Schema(description = "分类层级", example = "1")
    private Integer level;

    /**
     * 分类图标
     */
    @Schema(description = "分类图标", example = "icon-service")
    private String icon;

    /**
     * 分类颜色
     */
    @Schema(description = "分类颜色", example = "#1890ff")
    private String color;

    /**
     * 排序值
     */
    @Schema(description = "排序值", example = "1")
    private Integer sortOrder;

    /**
     * 分类状态：0-禁用，1-启用
     */
    @Schema(description = "分类状态：0-禁用，1-启用", example = "1")
    private Integer status;

    /**
     * 分类类型：0-系统分类，1-用户分类
     */
    @Schema(description = "分类类型：0-系统分类，1-用户分类", example = "0")
    private Integer type;

    /**
     * 分类权限：0-公开，1-私有，2-组织内共享
     */
    @Schema(description = "分类权限：0-公开，1-私有，2-组织内共享", example = "0")
    private Integer permission;

    /**
     * 模板数量
     */
    @Schema(description = "模板数量", example = "10")
    private Integer templateCount;

    /**
     * 子分类数量
     */
    @Schema(description = "子分类数量", example = "3")
    private Integer childrenCount;

    /**
     * 分类配置，JSON格式
     */
    @Schema(description = "分类配置，JSON格式")
    private String config;

    /**
     * 分类元数据，JSON格式
     */
    @Schema(description = "分类元数据，JSON格式")
    private String metadata;

    /**
     * 子分类列表（非数据库字段，用于构建树形结构）
     */
    @TableField(exist = false)
    @Schema(description = "子分类列表")
    private List<Category> children;
}
